package com.example.homework0113;

import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener;
import com.yanzhenjie.recyclerview.OnItemMenuClickListener;
import com.yanzhenjie.recyclerview.SwipeMenu;
import com.yanzhenjie.recyclerview.SwipeMenuBridge;
import com.yanzhenjie.recyclerview.SwipeMenuCreator;
import com.yanzhenjie.recyclerview.SwipeMenuItem;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private int index = 1;
    private List<ContactModel> data = new ArrayList<>();
    private com.example.homework0113.CustomAdapter adapter = new com.example.homework0113.CustomAdapter(this);
    private SwipeRecyclerView listview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
    }

    private void initListMenu(){
        //列表侧滑菜单构造器
        SwipeMenuCreator menuCreator=new SwipeMenuCreator() {
            @Override
            //参数1:左菜单
            //参数2：右菜单
            //参数3：菜单位置（先添加的菜单position=0，依次累加）
            public void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int position) {
                SwipeMenuItem menuDelete=new SwipeMenuItem(MainActivity.this);
                //菜单名称
                menuDelete.setText("删除");
                //菜单文字颜色
                menuDelete.setTextColor(Color.WHITE);
                //菜单按钮背景颜色
                menuDelete.setBackgroundColor(Color.RED);
                //设置字体大小(单位不是sp)
                menuDelete.setTextSize(20);
                //设置菜单宽度（单位为像素）
                menuDelete.setWidth(180);
                //设置菜单高度(一般不设置固定高度)
                menuDelete.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
                //加入右侧菜单列表
                rightMenu.addMenuItem(menuDelete);
            }
        };
        //将构造好的菜单添加进布局中
        listview.setSwipeMenuCreator(menuCreator);
        //设置菜单点击事件
        listview.setOnItemMenuClickListener(new OnItemMenuClickListener() {
            @Override
            //int adapterPosition列表条目脚标；
            public void onItemClick(SwipeMenuBridge menuBridge, int adapterPosition) {
                //收起侧滑菜单
                menuBridge.closeMenu();
                //判断菜单方向
                if (SwipeRecyclerView.RIGHT_DIRECTION==menuBridge.getDirection()){
                    //获取菜单脚标顺序
                    if (menuBridge.getPosition()==0){
                        Toast.makeText(MainActivity.this,"删除呀",Toast.LENGTH_SHORT).show();
                        // 移除该条目
                        adapter.notifyItemRemoved(adapterPosition);//移除数据
                        data.remove(adapterPosition);
                        //adapter.notifyItemChanged(position); //刷新
                        adapter.notifyItemRangeChanged(adapterPosition,1);
                    }
                }
            }
        });
    }

    private void initview() {
        //1.获取listview
         listview = findViewById(R.id.list_view);
        initRefresh();
        LinearLayoutManager llm = new LinearLayoutManager(this);
        listview.setLayoutManager(llm);
        initListMenu();
        //2.绘制条目列表
        //3.创建CustomAdapter,重写里面的方法
        //4.创建ContactModel类，将每个控件的名字设为全局变量，并生成其set，get方法
        //5.在CustomAdapter类中创建private List<ContactModel>data;并生成其set方法跟构造方法；

        com.example.homework0113.ContactModel item = new com.example.homework0113.ContactModel();
        item.setListicon(R.drawable.change);
        item.setListmax("5");
        item.setListtitle("嫦娥仙子");
        item.setListdate("12:20");
        item.setListtitle2("在干嘛");
        data.add(item);
        com.example.homework0113.ContactModel houge = new com.example.homework0113.ContactModel();
        houge.setListicon(R.drawable.houge);
        houge.setListmax("5");
        houge.setListtitle("猴哥");
        houge.setListdate("12:20");
        houge.setListtitle2("有个妖精搞不定，搭把手");
        data.add(houge);
        com.example.homework0113.ContactModel sanzang = new com.example.homework0113.ContactModel();
        sanzang.setListicon(R.drawable.sanzang);
        sanzang.setListmax("3");
        sanzang.setListtitle("唐僧");
        sanzang.setListdate("12:20");
        sanzang.setListtitle2("救救我，大哥");
        data.add(sanzang);
        com.example.homework0113.ContactModel bajie = new com.example.homework0113.ContactModel();
        bajie.setListicon(R.drawable.bajie);
        bajie.setListmax("6");
        bajie.setListtitle("八戒");
        bajie.setListdate("12:20");
        bajie.setListtitle2("八戒，你个懒虫");
        data.add(bajie);
        com.example.homework0113.ContactModel gril = new com.example.homework0113.ContactModel();
        gril.setListicon(R.drawable.grilwang);
        gril.setListmax("3");
        gril.setListtitle("女儿国主");
        gril.setListdate("12:20");
        gril.setListtitle2("哥哥，哥哥");
        data.add(gril);
        com.example.homework0113.ContactModel guanyin = new com.example.homework0113.ContactModel();
        guanyin.setListicon(R.drawable.guanyin);
        guanyin.setListmax("7");
        guanyin.setListtitle("观音");
        guanyin.setListdate("12:20");
        guanyin.setListtitle2("施主近来可好");
        data.add(guanyin);
        com.example.homework0113.ContactModel jinjiao = new com.example.homework0113.ContactModel();
        jinjiao.setListicon(R.drawable.jinjiao);
        jinjiao.setListmax("1");
        jinjiao.setListtitle("金角");
        jinjiao.setListdate("12:20");
        jinjiao.setListtitle2("哥，猴子打我");
        data.add(jinjiao);
        com.example.homework0113.ContactModel rulai = new com.example.homework0113.ContactModel();
        rulai.setListicon(R.drawable.rulai);
        rulai.setListmax("1");
        rulai.setListtitle("如来");
        rulai.setListdate("12:20");
        rulai.setListtitle2("兄弟，还好吗");
        data.add(rulai);
        com.example.homework0113.ContactModel shasen = new com.example.homework0113.ContactModel();
        shasen.setListicon(R.drawable.shaseng);
        shasen.setListmax("1");
        shasen.setListtitle("沙和尚");
        shasen.setListdate("12:20");
        shasen.setListtitle2("师傅被妖怪抓走了");
        data.add(shasen);
        ContactModel yinjiao = new ContactModel();
        yinjiao.setListicon(R.drawable.yinjiao);
        yinjiao.setListmax("1");
        yinjiao.setListtitle("银角");
        yinjiao.setListdate("12:20");
        yinjiao.setListtitle2("今晚去蹦迪否");
        data.add(yinjiao);
        com.example.homework0113.ContactModel yudi = new com.example.homework0113.ContactModel();
        yudi.setListicon(R.drawable.yudi);
        yudi.setListmax("1");
        yudi.setListtitle("玉帝");
        yudi.setListdate("12:20");
        yudi.setListtitle2("七仙女还可以吗，哥");
        data.add(yudi);
        com.example.homework0113.ContactModel yaojing = new com.example.homework0113.ContactModel();
        yaojing.setListicon(R.drawable.zhizhujing);
        yaojing.setListmax("1");
        yaojing.setListtitle("蜘蛛精");
        yaojing.setListdate("12:20");
        yaojing.setListtitle2("奴家仰慕官人已久");
        data.add(yaojing);

        adapter.setData(data);
        listview.setAdapter(adapter);
        adapter.setListener(new CustomAdapter.onItemViewClickListener() {
            @Override
            public void onItemClick(int position) {
                if (position == 0){
                    Intent intent=new Intent(MainActivity.this,Chat.class);
                    startActivity(intent);

                }else {
                    Toast.makeText(MainActivity.this,"呀呀，页面跑丢了",Toast.LENGTH_SHORT).show();
                }
            }
        });

    }
    private void initRefresh(){
        //获取列表
        SmartRefreshLayout smartRefresh=findViewById(R.id.smart_refresh);
        //开启刷新
        //里面参数为刷新延迟时间(可以为空参，表示立即开始刷新，大概率会出现问题）
        //smartRefresh.autoRefresh(2000);
        //开启加载
        //里面参数为刷新延迟时间(可以为空参，表示立即开始刷新，大概率会出现问题）
        //smartRefresh.autoLoadMore(2000);
        //结束刷新
        //参数1：刷新时间
        //参数2：刷新是否成功(true显示刷新成功/false显示刷新失败）
        //参数3：刷新过程中没有效果，仅在上拉加载中有效果
        //smartRefresh.finishRefresh(5000,true,true);
        //结束加载
        //参数1：加载时间
        //参数2：加载是否成功(true显示加载成功/false显示加载失败）
        //参数3:加载显示是否有更多数据（true表示没有更多数据，文字显示为没有更多数据/false则根据参数2显示加载成功/加载失败
        //smartRefresh.finishLoadMore(5000,true,false);
        //刷新和加载监听可以单独设置Listener监听，也可以通过OnRefreshLoadMoreListener来同时设置；
        //监听设置后，默认的刷新/加载完成时间就会失效，需要我们在监听回调中手动添加刷新/加载结束的finshXXX方法；
        smartRefresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                smartRefresh.finishLoadMore(3000,true,false);
                for (int i = 1; i < 5; i++) {
                    ContactModel item = new ContactModel();
                    item.setListicon(R.drawable.yinjiao);
                    item.setListmax("1");
                    item.setListtitle("银角"+i);
                    item.setListdate("12:20");
                    item.setListtitle2("今晚去蹦迪否");
                    data.add(item);
                }
                adapter.notifyDataSetChanged();
            }
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                smartRefresh.finishRefresh(3000,true,false);
                Toast.makeText(MainActivity.this,"在刷新了",Toast.LENGTH_SHORT).show();
            }
        });


    }
}